1.1 Dalvik架构

  • Dalvik VM第一次加载生成Cache文件,速度较慢
  • Dalvik解释器采用预先算好的Goto地址,基于每个指令OpCode,都固定以64bytes为相对地址,可节省指令执行后查表的时间
  • dx将java的.class文件转换成.dex格式,优化时会使文件增加1~4倍,格式为ODEX

1.2 和java虚拟机的差异

  • 虚拟机很小,使用的空间也很小
  • 没有JIT编译器
  • 常量池使用32位索引,以简化解释器
  • 使用自己的字节码
  • 基于register
  • 通过Zygote进行class Preloading,完成虚拟机初始化

1.3 Dalvik VM的主要特征

  • .dex文件会把所有.class文件整合到一个文件中,减小了文件尺寸,i/o操作,提高类查找速度
  • 每一个android应用运行在一个Dalvik VM实例里,每一个VM实例都是一个独立的进程空间,不同来源的应用使用不同的linux用户来运行
  • Zygote是一个虚拟机进程,每当系统需要执行一个android应用程序,Zygote就会孵化出一个子进程来执行该应用程序

1.4 Dalvik VM代码结构

代码保存在dalvik/目录下

  • dalvikvm :命令行调用入口文件目录,用于解释命令行参数,调用库函数接口等。
  • dexdump :用于查看看编译出来的文件是否正确
  • dexlist :生成查看dex文件里所有类方法的工具
  • dexopt :生成dex优化工具
  • dvz :生成从Zygote请求生成虚拟机实例的工具
  • hit :生成显示对象信息/堆栈信息的工具
  • ……


    学习中…